1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.purple.win32; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.giochannel; 34 import core.stdc.time; 35 import core.stdc.config; 36 37 extern (C): 38 39 alias int function () FARPROC; 40 41 struct timeval 42 { 43 c_long tv_sec; 44 c_long tv_usec; 45 } 46 47 struct timezone 48 { 49 int tz_minuteswest; 50 int tz_dsttime; 51 } 52 53 struct hostent 54 { 55 char* h_name; 56 char** h_aliases; 57 short h_addrtype; 58 short h_length; 59 char** h_addr_list; 60 } 61 62 struct in_addr 63 { 64 union 65 { 66 struct 67 { 68 ubyte s_b1; 69 ubyte s_b2; 70 ubyte s_b3; 71 ubyte s_b4; 72 } 73 struct 74 { 75 ushort s_w1; 76 ushort s_w2; 77 } 78 c_ulong S_addr; 79 } 80 } 81 82 struct sockaddr 83 { 84 ushort sa_family; 85 char[14] sa_data; 86 } 87 88 version(Derelict_Link_Static) 89 { 90 extern( C ) nothrow 91 { 92 const(char)* wpurple_get_timezone_abbreviation(const(tm)* tm); 93 int wpurple_socket(int domain, int style, int protocol); 94 int wpurple_connect(int socket, sockaddr* addr, c_ulong length); 95 int wpurple_getsockopt(int socket, int level, int optname, void* optval, int* optlenptr); 96 int wpurple_setsockopt(int socket, int level, int optname, const(void)* optval, int optlen); 97 int wpurple_getsockname(int socket, sockaddr* addr, int* lenptr); 98 int wpurple_bind(int socket, sockaddr* addr, int length); 99 int wpurple_listen(int socket, uint n); 100 int wpurple_sendto(int socket, const(void)* buf, size_t len, int flags, const(sockaddr)* to, int tolen); 101 int wpurple_recv(int fd, void* buf, size_t len, int flags); 102 int wpurple_send(int fd, const(void)* buf, uint size, int flags); 103 int wpurple_inet_aton(const(char)* name, in_addr* addr); 104 const(char)* wpurple_inet_ntop(int af, const(void)* src, char* dst, int cnt); 105 int wpurple_inet_pton(int af, const(char)* src, void* dst); 106 hostent* wpurple_gethostbyname(const(char)* name); 107 char* wpurple_strerror(int errornum); 108 int wpurple_fcntl(int socket, int command, ...); 109 int wpurple_ioctl(int fd, int command, void* opt); 110 int wpurple_gettimeofday(timeval* p, timezone* z); 111 tm* wpurple_localtime_r(const(time_t)* time, tm* resultp); 112 int wpurple_read(int fd, void* buf, uint size); 113 int wpurple_write(int fd, const(void)* buf, uint size); 114 int wpurple_close(int fd); 115 int wpurple_gethostname(char* name, size_t size); 116 int wpurple_rename(const(char)* oldname, const(char)* newname); 117 FARPROC wpurple_find_and_loadproc(const(char)* dllname, const(char)* procedure); 118 gboolean wpurple_read_reg_dword(void* rootkey, const(char)* subkey, const(char)* valname, c_ulong* result); 119 char* wpurple_read_reg_string(void* rootkey, const(char)* subkey, const(char)* valname); 120 gboolean wpurple_write_reg_string(void* rootkey, const(char)* subkey, const(char)* valname, const(char)* value); 121 char* wpurple_escape_dirsep(const(char)* filename); 122 GIOChannel* wpurple_g_io_channel_win32_new_socket(int socket); 123 gchar* wpurple_get_special_folder(int folder_type); 124 const(char)* wpurple_install_dir(); 125 const(char)* wpurple_lib_dir(); 126 const(char)* wpurple_locale_dir(); 127 const(char)* wpurple_data_dir(); 128 void wpurple_init(); 129 void wpurple_cleanup(); 130 c_long wpurple_get_tz_offset(); 131 } 132 } 133 else 134 { 135 extern( C ) nothrow 136 { 137 alias da_wpurple_get_timezone_abbreviation = const(char)* function(const(tm)* tm); 138 alias da_wpurple_socket = int function(int domain, int style, int protocol); 139 alias da_wpurple_connect = int function(int socket, sockaddr* addr, c_ulong length); 140 alias da_wpurple_getsockopt = int function(int socket, int level, int optname, void* optval, int* optlenptr); 141 alias da_wpurple_setsockopt = int function(int socket, int level, int optname, const(void)* optval, int optlen); 142 alias da_wpurple_getsockname = int function(int socket, sockaddr* addr, int* lenptr); 143 alias da_wpurple_bind = int function(int socket, sockaddr* addr, int length); 144 alias da_wpurple_listen = int function(int socket, uint n); 145 alias da_wpurple_sendto = int function(int socket, const(void)* buf, size_t len, int flags, const(sockaddr)* to, int tolen); 146 alias da_wpurple_recv = int function(int fd, void* buf, size_t len, int flags); 147 alias da_wpurple_send = int function(int fd, const(void)* buf, uint size, int flags); 148 alias da_wpurple_inet_aton = int function(const(char)* name, in_addr* addr); 149 alias da_wpurple_inet_ntop = const(char)* function(int af, const(void)* src, char* dst, int cnt); 150 alias da_wpurple_inet_pton = int function(int af, const(char)* src, void* dst); 151 alias da_wpurple_gethostbyname = hostent* function(const(char)* name); 152 alias da_wpurple_strerror = char* function(int errornum); 153 alias da_wpurple_fcntl = int function(int socket, int command, ...); 154 alias da_wpurple_ioctl = int function(int fd, int command, void* opt); 155 alias da_wpurple_gettimeofday = int function(timeval* p, timezone* z); 156 alias da_wpurple_localtime_r = tm* function(const(time_t)* time, tm* resultp); 157 alias da_wpurple_read = int function(int fd, void* buf, uint size); 158 alias da_wpurple_write = int function(int fd, const(void)* buf, uint size); 159 alias da_wpurple_close = int function(int fd); 160 alias da_wpurple_gethostname = int function(char* name, size_t size); 161 alias da_wpurple_rename = int function(const(char)* oldname, const(char)* newname); 162 alias da_wpurple_find_and_loadproc = FARPROC function(const(char)* dllname, const(char)* procedure); 163 alias da_wpurple_read_reg_dword = gboolean function(void* rootkey, const(char)* subkey, const(char)* valname, c_ulong* result); 164 alias da_wpurple_read_reg_string = char* function(void* rootkey, const(char)* subkey, const(char)* valname); 165 alias da_wpurple_write_reg_string = gboolean function(void* rootkey, const(char)* subkey, const(char)* valname, const(char)* value); 166 alias da_wpurple_escape_dirsep = char* function(const(char)* filename); 167 alias da_wpurple_g_io_channel_win32_new_socket = GIOChannel* function(int socket); 168 alias da_wpurple_get_special_folder = gchar* function(int folder_type); 169 alias da_wpurple_install_dir = const(char)* function(); 170 alias da_wpurple_lib_dir = const(char)* function(); 171 alias da_wpurple_locale_dir = const(char)* function(); 172 alias da_wpurple_data_dir = const(char)* function(); 173 alias da_wpurple_init = void function(); 174 alias da_wpurple_cleanup = void function(); 175 alias da_wpurple_get_tz_offset = c_long function(); 176 } 177 178 __gshared 179 { 180 da_wpurple_get_timezone_abbreviation wpurple_get_timezone_abbreviation; 181 da_wpurple_socket wpurple_socket; 182 da_wpurple_connect wpurple_connect; 183 da_wpurple_getsockopt wpurple_getsockopt; 184 da_wpurple_setsockopt wpurple_setsockopt; 185 da_wpurple_getsockname wpurple_getsockname; 186 da_wpurple_bind wpurple_bind; 187 da_wpurple_listen wpurple_listen; 188 da_wpurple_sendto wpurple_sendto; 189 da_wpurple_recv wpurple_recv; 190 da_wpurple_send wpurple_send; 191 da_wpurple_inet_aton wpurple_inet_aton; 192 da_wpurple_inet_ntop wpurple_inet_ntop; 193 da_wpurple_inet_pton wpurple_inet_pton; 194 da_wpurple_gethostbyname wpurple_gethostbyname; 195 da_wpurple_strerror wpurple_strerror; 196 da_wpurple_fcntl wpurple_fcntl; 197 da_wpurple_ioctl wpurple_ioctl; 198 da_wpurple_gettimeofday wpurple_gettimeofday; 199 da_wpurple_localtime_r wpurple_localtime_r; 200 da_wpurple_read wpurple_read; 201 da_wpurple_write wpurple_write; 202 da_wpurple_close wpurple_close; 203 da_wpurple_gethostname wpurple_gethostname; 204 da_wpurple_rename wpurple_rename; 205 da_wpurple_find_and_loadproc wpurple_find_and_loadproc; 206 da_wpurple_read_reg_dword wpurple_read_reg_dword; 207 da_wpurple_read_reg_string wpurple_read_reg_string; 208 da_wpurple_write_reg_string wpurple_write_reg_string; 209 da_wpurple_escape_dirsep wpurple_escape_dirsep; 210 da_wpurple_g_io_channel_win32_new_socket wpurple_g_io_channel_win32_new_socket; 211 da_wpurple_get_special_folder wpurple_get_special_folder; 212 da_wpurple_install_dir wpurple_install_dir; 213 da_wpurple_lib_dir wpurple_lib_dir; 214 da_wpurple_locale_dir wpurple_locale_dir; 215 da_wpurple_data_dir wpurple_data_dir; 216 da_wpurple_init wpurple_init; 217 da_wpurple_cleanup wpurple_cleanup; 218 da_wpurple_get_tz_offset wpurple_get_tz_offset; 219 } 220 }